class AI
{	char color;
	int depth;
	node count;
	vector<Stack> nodes;
	Stack current_state;
	AI()
	{
	depth=0;
	current_state=0;
	count=0;
	}
	
	evaluate_value();	//uses nodes defined above to give value defined in stack
	find_children(Gameboard board);	//this will take in the gameboard from the engine and store the children in stack nodes
									//it will calculate the positions available and in each node it will store this in value
	number_of_available_moves(Gameboard board);	//only called when depth = 2
	find_children_for_depth1()
}


/********
	if depth = 0, find all children and call find children for each of them depth++

	if depth = 1, find all children and store in Stack nodes[]
				  calculate a number of available moves for each child
				  find the max and the min and store in Stack nodes[] to each respective child

********/

class Stack
{
	Gameboard current_board;
	int value;
	int max_value_node;
	int min_value_node;
	vector<Gameboard> leafs;
	char current_player;
	Stack()
	{
	current_board.setup();
	value=0;
	max_value_node=0;
	min_value_node=0;
	}
}

/*
	basically the first value will go to the AI (the current state of the game)
	*/
	
void AI:: blah()
{
	if (depth==0)
	{
		find_children_for_depth1()
	}
	if (depth==1)
	{
		find_children_for_depth2()
	}
	
}
void void AI:: find_children_for_depth1()
{
char op;
if (color=='@')
{
	op='O';
}
else
{
 op='@';
}
for(int i=0; i<10; i++)
	{
		for(int j=0; j<10; j++)
		{
			if(currnt_state.board[i][j]=='*')\
			{
			nodes.push_back(current_state)
			nodes[count].current_board[i][j]==op;
			count++
			}
		}
	}
	depth=1;

}
void void AI:: find_children_for_depth2()
{
	for(int i=0; i<nodes.size(); i++)
	{
		nodes[i]
	}
}

	
